
#if !defined (mMatrix3x3_H)
#define mMatrix3x3_H

#include <math.h>

#include "mVector3.h"

__declspec(align(16)) class mMatrix3x3
{
public:
	float m00, m01, m02,
		m10, m11, m12,
		m20, m21, m22;

	mMatrix3x3(void);
	mMatrix3x3(const mMatrix3x3 &);
	mMatrix3x3(float, float, float,
		float, float, float,
		float, float, float);
	mMatrix3x3(float[9]);
	mMatrix3x3(float[3][3]);
	~mMatrix3x3(void);

	mMatrix3x3 &operator =(const mMatrix3x3 &);
	bool operator ==(const mMatrix3x3 &) const;
	bool operator !=(const mMatrix3x3 &) const;
	mMatrix3x3 operator -(void) const;
	mMatrix3x3 operator +(const mMatrix3x3 &) const;
	mMatrix3x3 operator -(const mMatrix3x3 &) const;
	mMatrix3x3 operator *(const mMatrix3x3 &) const;
	mVector3 operator *(const mVector3 &) const;
	mMatrix3x3 operator *(float) const;
	//mMatrix3x3 operator /(float) const;
	mMatrix3x3 &operator +=(const mMatrix3x3 &);
	mMatrix3x3 &operator -=(const mMatrix3x3 &);
	mMatrix3x3 &operator *=(float);
	//mMatrix3x3 &operator /=(float);
	float &operator [](int);
	//float operator *(const mMatrix3x3 &) const;

	void Identity(void);

	void createXRotation(float);
	void createYRotation(float);
	void createZRotation(float);
	//void createTranslation(mVector3);
	void createScale(float);
};

#endif